package com.faya.green.service;

import com.faya.green.model.ResultJson;
import com.faya.green.model.User;
import com.faya.green.model.web.UserPostOrgWeb;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.List;

/**
 * 用户 ：LX
 * 创建时间： 2018/7/10. 23:54
 * 地点：广州
 * 目的: 用户业务层接口
 * 结果：
 */
public interface UserService {

    /**
     * 添加新用户 (从页面注册的用户)
     * @param user 用户
     * @param file 头像文件
     */
    User addUser(User user, MultipartFile file);

    /**
     * 用户登录逻辑
     * @param logName 登录用户名，有且唯一
     * @param password 未加密的密码
     * @return 用户正确则返回用户，否则null
     */
    User login(String logName, String password);

    /**
     * 内部添加的新用户
     * @param user 用户
     * @param file 头像文件
     * @param postId 岗位的主键
     */
    void addAutonomousUser(User user, MultipartFile file, String postId);

    /**
     * 找到指定岗位下的用户,分页
     * @param postId 岗位 ID
     * @param page 页码
     * @param limit 每页显示数量
     * @return
     */
    ResultJson getUserOnPostPage(String postId, Integer page, Integer limit);

    /**
     * 根据主键查询用户
     * @param id 用户id
     * @return
     */
    User getUserById(String id);

    /**
     *  修改 用户
     * @param user 用户
     * @param file 头像文件
     * @param postId 岗位的主键
     */
    void updateUser(User user, MultipartFile file, String postId);

    /**
     * 删除用户
     * @param userId 用户id
     * @param postId 岗位id
     */
    void delUser(String userId, String postId);

    /**
     * 根据用户id 查询出对应的岗位、机构等信息
     * @param userId 用户id
     * @return
     */
    List<UserPostOrgWeb> getUserPostOrgWebByUid(String userId);

    /**
     * 根据用户id 查询出对应的岗位、机构等信息
     * @param ucreateUser 创建人用户ID
     * @return
     */
    List<UserPostOrgWeb> getUserPostOrgWebByCreateUser(String ucreateUser);


    /**
     * 用户的角色授予
     * @param roleArr 角色数组
     * @param id 用户id
     */
    void addUserRole(String[] roleArr, String id);

    /**
     * 删除用户所拥有的这个权限
     * @param id 权限ID
     * @param uid 用户id
     */
    void delUserRole(String id, String uid);
}
